Error-correction coding, also called channel coding, is a type of digital signal processing that improves data reliability by introducing a known structure into a data sequence prior to transmission or storage. This structure enables a receiving system to detect and possibly correct errors caused by corruption during transmission or storage. This coding technique enables the decoder to correct errors without requesting retransmission of the original information or retrieving corrupt information from storage.
FIG. 1 is a block diagram illustrating an exemplary communication system. In communication channels that employ error-correction coding, a digital information source sends user data to an encoder 101. The encoder 101 inserts redundant bits, or parity bits, thereby outputting a longer sequence of code bits called a codeword. The codeword is sent through the transmission channel 102, where errors could occur due to noise or other factors. The codewords are received by a decoder 103, which extracts the original or recovered user data.
For many algebraic error correction codes, such as Reed-Solomon codes and BCH (Bose, Ray-Chaudhuri, Hocquenghem) codes, the complexity of the decoding scheme is determined by the desired error correction power and field size. Known communication systems use either erasure decoding or error decoding. When the locations of the errors are known, erasure decoding is used. For example, when a receiver detects the presence of jamming, fading, or some transient malfunction, it may choose to declare a bit or symbol erased. Attempts to correct the erasures can then be performed using the error correction codes and the erasure information. Here, the decoder receives erasure information, which indicates the location of zero or more suspected corrupt symbols within a codeword. Otherwise, error decoding is used. In error decoding, the decoder attempts to correct the errors by finding both the locations of the errors and by recovering the original symbols using the error correction codes. Reed-Solomon and BCH codes, as well as erasure and error decoding, are well known in the art and will not be described here in detail. Erasure decoding requires fewer operations than error decoding but requires erasure information, which is not always available. Error decoding does not require erasure information, however, in general, it is more complex, requiring more operations than erasure decoding.
Accordingly, there is a need for a method and system for reducing the complexity of error correction decoding while maintaining a desired error correction performance level.